/*
 * @Date         : 2022-02-18 11:12:28
 * @LastEditors  : zu1662
 * @LastEditTime : 2022-03-03 19:45:49
 * @Description  : 系统公共存储库
 * 
 * Copyright © 2022 by zu1662, All Rights Reserved. 
 */
import { makeAutoObservable } from 'mobx';
import { AppTheme, LocaleType } from '@/types/app';

// 系统相关 存储库
export class AppStore {
  // 侧边栏折叠
  isFold = false

  // 多语言设置
  locale: LocaleType = 'zh'

  // 页面主题
  theme: AppTheme = 'light';

  // 版本信息
  version = process.env.VERSION as string;

  constructor() {
    // 设置监听, 对应的初始化应该在上方
    // 使用 autoBind 可以设置 this 指向当前 对象。下面方法不使用 => 函数也可正常，否则会报 undefind 错误
    makeAutoObservable(this, {}, { autoBind: true });
  }

  // 更新本地语言
  changeLocale(val: LocaleType) {
    this.locale = val;
  }

  // 侧边栏折叠 Toggle
  toggleFold() {
    this.isFold = !this.isFold;
  }

  // 设置侧边栏折叠状态
  updateFold(flag: boolean) {
    this.isFold = flag;
  }

  // 更新系统主题
  changeTheme(val: AppTheme) {
    this.theme = val;
  }
}

export default AppStore;
